将多个形式串连成一个表达式。
如果只有一个参数 x 和一个形式 form ,那么将 x 作为第二个项(item),插入到 form 当中,如果 form 不是一个列表,那么将 form 包裹到一个列表里面。[译注:举个例子, (-> a-map :key) 会展开成 (:key a-map) ,而不是 :key a-map 。]
如果有多于一个形式,那么将第一个形式作为第二个项插入到第二个形式中,以此类推。
; 应用多个函数
user=> (-> "a b c d" .toUpperCase (.replace "A" "X") (.split " ") first)
"X"
user=> (use '[clojure.walk :only [macroexpand-all]])
nil
user=> (macroexpand-all '(-> "a b c d"
                             .toUpperCase
                             (.replace "A" "X")
                             (.split " ")
                             first))
(first (. (. (. "a b c d" toUpperCase) replace "A" "X") split " "))
; 从深层嵌套的 map 中取出值
user=> (def language {:clojure {:author {:first-name "Rich" :last-name "Hickey"}}})
#'user/language
user=> (:first-name (:author (:clojure language)))
"Rich"
user=> (-> language :clojure :author :first-name)
"Rich"